package homework;

import upload.StreamUtils;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.Scanner;

/**
 * @author DCSGO
 * @version 1.0
 * (1)编写客户端程序和服务器端程序
 * (2)客户端可以输入一个音乐文件名，比如高山流水,服务端收到音乐名后，可以给客户端返回这个音乐文件，
 * 如果服务器没有这个文件，返回一个默认的音乐即可
 * (3)客户端收到文件后，保存到本地 E:\dest
 * (4)提示:该程序可以使用StreamUtils.java
 */
public class Homework03Client {

    public static void main(String[] args) throws Exception {
        String musicName;
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入文件名：");
        musicName = scanner.nextLine();

        String ParentFilePath = "E:\\dest";
        File downloadFile = new File(ParentFilePath, "down." + musicName);
        Socket socket = new Socket(InetAddress.getLocalHost(), 9999);
        BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
        bos.write(musicName.getBytes());
        bos.flush();
        socket.shutdownOutput();
        System.out.println("已向服务端发送下载请求！");

        byte[] downloadMusic = StreamUtils.streamToByteArray(socket.getInputStream());
        BufferedOutputStream bos2 = new BufferedOutputStream(new FileOutputStream(downloadFile));
        bos2.write(downloadMusic);
        bos2.flush();

        bos2.close();
        bos.close();
        socket.close();

        System.out.println(musicName + " 下载成功！");

        /*
         * 已向服务端发送下载请求！
         * 英雄联盟,Marshmello - Flash Funk (Marshmello Remix).mp3 下载成功！
         *
         * 进程已结束，退出代码为 0
         */
    }
}
